﻿// LightNet - Lightweight .NET Framework
// Copyright (c) 2010 http://lightnet.codeplex.com

namespace System.Runtime.CompilerServices
{
    /// <summary>
    /// Defines the details of how a method is implemented.
    /// </summary>
    [Flags]
    public enum MethodImplOptions
    {
        /// <summary>
        /// Specifies that the method is implemented in unmanaged code.
        /// </summary>
        Unmanaged = 4,
        /// <summary>
        /// Specifies that the method is declared, but its implementation is provided elsewhere.
        /// </summary>
        ForwardRef = 0x10,
        /// <summary>
        /// Specifies that the method signature is exported exactly as declared.
        /// </summary>
        PreserveSig = 0x80,
        /// <summary>
        /// Specifies an internal call. An internal call is a call to a method implemented within the common language runtime itself.
        /// </summary>
        InternalCall = 0x1000,
        /// <summary>
        /// Specifies that the method can be executed by only one thread at a time.
        /// </summary>
        Synchronized = 0x20,
        /// <summary>
        /// Specifies that the method can not be inlined.
        /// </summary>
        NoInlining = 8,
        /// <summary>
        /// Specifies that the method is not optimized by the just-in-time (JIT) compiler.
        /// </summary>
        NoOptimization = 0x40
    }
}
